d32fd5567a164d850e9490347b71624a1a17aadf,src/java/org/apache/cassandra/service/StorageService.java,StorageService,initServer,#,347
Before Change
}
SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap
setToken(token);
Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, valueFactory.normal(getLocalToken()));
setMode("Normal", false);
After Change
logger_.info("This node will not auto bootstrap because it is configured to be a seed node.");
Token token;
boolean bootstrapped = false;
if (DatabaseDescriptor.isAutoBootstrap()
&& !(DatabaseDescriptor.getSeeds().contains(FBUtilities.getLocalAddress()) || SystemTable.isBootstrapped()))
{
setMode("Joining: getting load information", true);
StorageLoadBalancer.instance.waitForLoadInfo();
if (logger_.isDebugEnabled())
logger_.debug("... got load info");
if (tokenMetadata_.isMember(FBUtilities.getLocalAddress()))
{
String s = "This node is already a member of the token ring; bootstrap aborted. (If replacing a dead node, remove the old one from the ring first.)";
throw new UnsupportedOperationException(s);
}
setMode("Joining: getting bootstrap token", true);
token = BootStrapper.getBootstrapToken(tokenMetadata_, StorageLoadBalancer.instance.getLoadInfo());
// don't bootstrap if there are no tables defined.
if (DatabaseDescriptor.getNonSystemTables().size() > 0)
{
bootstrap(token);
assert !isBootstrapMode; // bootstrap will block until finished
bootstrapped = true;
SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap
}
// else nothing to do, go directly to participating in ring
}
else
{
token = SystemTable.getSavedToken();
if (token == null)
{
String initialToken = DatabaseDescriptor.getInitialToken();
if (initialToken == null)
{
token = partitioner_.getRandomToken();
logger_.warn("Generated random token " + token + ". Random tokens will result in an unbalanced ring; see http://wiki.apache.org/cassandra/Operations");
}
else
{
token = partitioner_.getTokenFactory().fromString(initialToken);
logger_.info("Saved token not found. Using " + token + " from configuration");
}
}
else
{
logger_.info("Using saved token " + token);
}
}
if(!bootstrapped)
setToken(token);
assert tokenMetadata_.sortedTokens().size() > 0;
}